ম্যাপ (Map) হলো C++ STL-এর একটি কন্টেইনার, যা কী-ভ্যালু (key-value) পেয়ার আকারে ডেটা সংরক্ষণ করে। প্রতিটি key
এর জন্য একটি নির্দিষ্ট value
থাকে, যা ম্যাপের মধ্যে সংরক্ষণ করা হয়। ম্যাপে প্রতিটি key
ইউনিক হতে হয়, তবে value
একাধিক key
এর জন্য একই হতে পারে। C++ এ map
সাধারণত map
এবং unordered_map
এই দুটি রকমের হতে পারে।
key
গুলো স্বয়ংক্রিয়ভাবে সাজানো অবস্থায় থাকে।key
গুলো সাজানো অবস্থায় থাকে না, বরং hashing
ব্যবহার করে সংরক্ষণ করা হয়।map
এর বৈশিষ্ট্যmap
কন্টেইনারে প্রতিটি key
ইউনিক হতে হয়।map
কন্টেইনারে key
গুলো স্বয়ংক্রিয়ভাবে সাজানো থাকে।key
এর মাধ্যমে সরাসরি value
অ্যাক্সেস করা যায়।map
Red-Black tree
ডেটা স্ট্রাকচার ব্যবহার করে, যা O(log n) কমপ্লেক্সিটিতে অ্যাক্সেস দেয়।key
না থাকলে, ডিফল্ট value
তৈরি করা হয়।map
ঘোষণা এবং ব্যবহারmap
ঘোষণা করার সময় key
এবং value
এর ডেটা টাইপ উল্লেখ করতে হয়। map
সাধারণত #include <map>
লাইব্রেরি থেকে ইমপোর্ট করে ব্যবহার করা হয়।
#include <iostream>
#include <map>
using namespace std;
int main() {
// map ঘোষণা করা
map<string, int> age;
// মান অ্যাসাইন করা
age["Alice"] = 25;
age["Bob"] = 30;
age["Charlie"] = 28;
// মান প্রদর্শন করা
for (const auto& entry : age) {
cout << entry.first << " is " << entry.second << " years old." << endl;
}
return 0;
}
আউটপুট:
Alice is 25 years old.
Bob is 30 years old.
Charlie is 28 years old.
বর্ণনা:
age
নামের একটি map
তৈরি করা হয়েছে, যার key
হলো string
এবং value
হলো int
।age["Alice"] = 25;
এর মাধ্যমে Alice
নামের ব্যক্তির বয়স 25
সংরক্ষণ করা হয়েছে।for
লুপ ব্যবহার করে প্রতিটি key-value
পেয়ার প্রিন্ট করা হয়েছে।map
এর সাধারণ মেথডমেথড | কাজ |
---|---|
insert() | key-value পেয়ার ইনসার্ট করতে ব্যবহার করা হয়। |
erase() | নির্দিষ্ট key বা পজিশন থেকে key-value পেয়ার মুছে দেয়। |
find() | একটি key খুঁজে বের করে এবং ইটারেটর রিটার্ন করে। |
size() | map এর মোট উপাদানের সংখ্যা রিটার্ন করে। |
clear() | map এর সমস্ত উপাদান মুছে দেয়। |
count() | একটি নির্দিষ্ট key ম্যাপে আছে কিনা তা যাচাই করে। |
empty() | map খালি কিনা তা যাচাই করে। |
insert
, erase
, find
, এবং count
মেথড#include <iostream>
#include <map>
using namespace std;
int main() {
map<string, int> age;
// ডেটা ইনসার্ট করা
age.insert({"Alice", 25});
age.insert({"Bob", 30});
age.insert({"Charlie", 28});
// নির্দিষ্ট key খোঁজা এবং প্রিন্ট করা
auto it = age.find("Alice");
if (it != age.end()) {
cout << "Alice's age: " << it->second << endl;
}
// নির্দিষ্ট key মুছে ফেলা
age.erase("Bob");
// একটি key আছে কিনা চেক করা
if (age.count("Bob") == 0) {
cout << "Bob is not in the map." << endl;
}
return 0;
}
আউটপুট:
Alice's age: 25
Bob is not in the map.
বর্ণনা:
age.insert({"Alice", 25});
দ্বারা নতুন key-value
পেয়ার ইনসার্ট করা হয়েছে।age.find("Alice");
দ্বারা Alice
এর তথ্য খুঁজে বের করা হয়েছে।age.erase("Bob");
দিয়ে Bob
এর এন্ট্রি মুছে ফেলা হয়েছে।age.count("Bob")
দিয়ে চেক করা হয়েছে যে Bob
ম্যাপে নেই।unordered_map
ব্যবহারunordered_map
একইভাবে কাজ করে তবে key
-গুলো সাজানো থাকে না।
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
unordered_map<string, int> age;
// ডেটা ইনসার্ট করা
age["Alice"] = 25;
age["Bob"] = 30;
age["Charlie"] = 28;
// unordered_map এ মান প্রিন্ট করা
for (const auto& entry : age) {
cout << entry.first << " is " << entry.second << " years old." << endl;
}
return 0;
}
বর্ণনা:
unordered_map
ব্যবহৃত হয়েছে, যেখানে key
-এর ক্রম ঠিক থাকে না।unordered_map
hashing
ব্যবহার করে।map
এবং unordered_map
এর পার্থক্যবৈশিষ্ট্য | map | unordered_map |
---|---|---|
ডেটা স্টোরেজ | key -এর ক্রম অনুযায়ী সংরক্ষণ করে | ডেটা ক্রমানুসারে থাকে না |
অ্যাক্সেস টাইম | O(log n) | গড়ে O(1), তবে সবচেয়ে খারাপ ক্ষেত্রে O(n) |
ডেটা স্ট্রাকচার | Red-Black Tree ব্যবহার করে | Hash Table ব্যবহার করে |
ব্যবহার | যখন ডেটা ক্রমানুসারে দরকার | যখন দ্রুত অ্যাক্সেস প্রয়োজন এবং ক্রম গুরুত্বপূর্ণ নয় |
map
এবং unordered_map
উভয়ই দ্রুত key-value
স্টোরেজ এবং রিট্রিভাল সরবরাহ করে।key
ইউনিক হওয়ার কারণে ডুপ্লিকেট এন্ট্রি থাকে না।key-value
পেয়ার ব্যবহার করে ডেটা স্টোরেজে সহজ অ্যাক্সেস এবং ম্যানেজমেন্ট সম্ভব।key-value
পেয়ার আকারে ডেটা সংরক্ষণ করে।map
এবং unordered_map
এই দুটি প্রকার রয়েছে।map
ডেটা ক্রমানুসারে সংরক্ষণ করে এবং unordered_map
ডেটা ক্রমানুসারে রাখে না।map
এবং unordered_map
কন্টেইনারগুলো প্রোগ্রামিংয়ে ডেটা ম্যানেজমেন্ট, দ্রুত অনুসন্ধান এবং বিভিন্ন অ্যালগরিদমে খুবই কার্যকর।
common.read_more